Computer graphics workstations can provide highly detailed graphics simulations for a variety of applications. Engineers and designers working in the computer aided design (CAD) and computer aided management (CAM) areas typically utilize graphics simulations for a variety of computational tasks. The computer graphics workstation industry has thus been driven to provide more powerful computer graphics workstations which can perform graphics simulations quickly and with increased detail.
Modern workstations having graphics capabilities generally utilize "window" systems to accomplish graphics manipulations. As the industry has been driven to provide faster and more detailed graphics capabilities, computer workstation engineers have tried to design high performance, multiple window systems which maintain a high degree of user interactivity with the graphics workstation.
A primary function of window systems in such graphics systems is to provide the user with simultaneous access to multiple processes on the workstation. Each of these processes provides an interface to the user through its own area onto the workstation display. The overall result for the user is an increase in productivity since the user can then manage more than one task at a time with multiple windows displaying multiple processes on the workstation.
In graphics systems, some scheme must be implemented to "render" or draw graphics primitives to the system's screen. "Graphics primitives" are a basic component of a graphics picture, such as a polygon or vector. All graphics pictures are formed with combinations of these graphics primitives. Many schemes may be utilized to perform graphics primitives rendering. One such scheme is the "spline tessellation" scheme utilized in the TURBO SRX graphics system provided by the Hewlett Packard Company.
The graphics rendering procedure generally takes place within a piece of graphics rendering hardware called a "frame buffer." A frame buffer generally comprises a plurality of video random access memory (VRAM) computer chips which store information concerning pixel activation on the system's display screen corresponding to the particular graphics primitives which will be traced out on the screen. Generally, the frame buffer contains all the graphics data information which will be written onto the windows, and stores this information until the graphics system is prepared to trace this information on the workstation's screen. The frame buffer is generally dynamic and is periodically refreshed until the information stored on it is written to the screen.
Thus, computer graphics systems convert image representations stored in the computer's memory to image representations which are easily understood by humans. The image representations are typically displayed on a cathode ray tube (CRT) device that is divided into arrays of pixel elements which can be stimulated to emit a range of colored light. The particular color of light that a pixel emits is called its "value." Display devices such as CRTs typically stimulate pixels sequentially in some regular order, such as left to right and top to bottom, and repeat the sequence 50 to 70 times a second to keep the screen refreshed. Thus, some mechanism is required to retain a pixel's value between the times that this value is used to stimulate the display. The frame buffer is typically used to provide this "refresh" function
Since frame buffers are usually implemented as arrays of VRAMs, they are "bit mapped" such that pixel locations on a display device are assigned x,y coordinates on the frame buffer. A single VRAM device rarely has enough storage location to completely store all the x,y coordinates corresponding to pixel locations for the entire image on a display device, and therefore, multiple VRAMs are generally used. The particular mapping algorithm used is a function of various factors, such as what particular VRAMs are available, how quickly the VRAM can be accessed compared to how quickly pixels can be rendered, how much hardware it takes to support a particular mapping, and other factors.
Typical CRT devices for use with graphics workstations are "raster scan" display devices. Typical raster scan display devices generate images comprising a multiplicity of parallel, non-overlapping bands of pixels comprising sets of parallel lines. An example of such a system is disclosed in U.S. Pat. No. 4,695,772 to Lau et al. The raster scan device disclosed in the Lau et al. patent is organized as an array of tiles.
Raster scan devices generally utilize a multiplicity of beams for simultaneously imaging data on a corresponding multiplicity of parallel scan lines. The multiplicity of beams generally write from the left side of the display CRT to the right side of the display CRT. For the purposes of dividing the CRT into tiles (a process called "tiling"), each tile is considered to comprise a depth equal to the multiplicity of scan lines, with each tile being a particular number of pixels wide. The resulting graphics primitive image thus comprises a multiplicity of parallel, non-overlapping sets of parallel lines of pixels generated by a separate sweep of electron beams across the CRT screen. As described by Lau et al., the tiles are generally rectangular, and thus organize the image into arrays having a plurality of rows by a set number of columnar tiles.
Early graphics systems which displayed synthesized raster images failed to provide realistic images which were usable to model many different, complex graphics figures. The main criticism of these earlier raster images was the extreme smoothness of the surfaces. Early raster images showed no textures, bumps, scratches or other real world surface features which are found on objects. See Heckbert, P. S., A Survey of Texture Mapping, IEEE Computer Graghics and Applications, Vol. 6, No. 11, November 1986, pp. 56-67. In answer to this early problem which plagued raster images, "texture mapping" was developed to model the complexity of real world surface images. As known by those with skill in the art, "texture mapping" means the mapping of a function onto a surface in three dimensions. Texture mapping is a relatively efficient way to create the appearance of complexity without the tedium of modelling and rendering three-dimensional detail which might be found on the surface of an object.
Many parameters have been texture mapped in the past. Some of these include surface color, specular reflection, normal vector perturbation, specularity, transparency, diffuse reflection, shadows, and local coordinate system or "frame mapping." In texture mapping, a source image known as the "texture" is mapped onto a surface in three-dimensional "object" space. The three-dimensional surface is then mapped to the destination image, which is generally a graphics display screen. As described by Heckbert, the mapping from texture space to screen space may be split into two phases. First, a surface parameterization that maps texture space to object space, followed by a standard modelled and viewing transformation that maps the object space to screen space with a perspective projection is accomplished. Then these two mappings are convolved to find the overall two-dimensional texture space to two-dimensional screen space mapping, and the intermediate three-dimensional space is discarded.
Many schemes have been employed to accomplish graphics primitive texture mapping. One such scheme is the "Pyramidal Parametrics" scheme which utilizes trilinear interpolation of pyramidal images utilizing a filtering technique whose output is a continuous function of position (U,V) and diameter (D). Pyramidal Parametrics, Computer Graghics (PROC SIGGRAPH 83) Vol. 17, No. 3, July 1984, pp. 213-222. Such a technique is described by Williams in pyramidal parametrics scheme incorporates a bilinear interpolation on two levels of a mapped pyramid texture map, and a linear interpolation between two of the levels. The filter employed to accomplish the trilinear interpolation has a constant cost of eight pixel accesses and seven multipliers per screen pixel. To accomplish the texture mapping, a square box filter to construct the image pyramid is used, although it is possible to use a Gaussian filter.
Williams introduced the concept of a "MIP" map which is a particular format for two-dimensional parametric functions, along with an associated addressing scheme. The acronym "MIP" is derived from the latin phrase "multum in parvo" which means "many things in a small place." A MIP map supplements bilinear interpolation of pixel values in a texture map with interpolation between prefiltered versions of the map which may then be used to compress many pixels into a small place.
MIP mapping generally offers greater speed than other texturing algorithms which perform successive convolutions over an area in a texture map for each particular pixel which is rendered. MIP maps are generally indexed by three coordinates U,V,D. U and V are spatial coordinates for the map, while D is the variable used to index and interpolate between the different levels of the MIP map pyramid.
A MIP map provides a fast solution in texture mapping since it compresses texture to two factors. First, filtering of the original texture takes place when the MIP map is first created. Second, subsequent filtering is approximated by blending different levels of the MIP map such that all filters are approximated by linearly interpolating a set of square box filters, the size of which are powers of two pixels in length. MIP mapping entails a fixed overhead which is independent of the area filtered to compute a sample.
MIP map memory organization achieves the desired speedy result in texture mapping since corresponding points in different prefiltered maps can be addressed simply by a binary shift of an input (U,V) coordinate pair. Routines for creating MIP maps are based on simple box or "Fourier" window prefiltering, followed by bilinear interpolation of pixels within each map instance, and then linear interpolation between two maps for each value of D, which is generally the pyramid's vertical coordinate. However, since MIP maps utilize box or Fourier windows, a severe compromise in texture mapping accuracy is made by utilizing a MIP map. Since a box window is symmetrical, each of the prefiltered levels of the map is filtered equally in an x and y direction.
As known by those with skill in the art, choosing the value of D trades off aliasing against blurring. Aliasing occurs as small or highly curved objects move across a raster scan since their surface normals may meet erratically with the sampling grid. Blurring occurs when the resolution of the system is not high enough to display the particular texture. Choosing the D value trades off the aliasing phenomena against blurring. Thus, a balance must generally be struck in a graphics system to give acceptable aliasing along with acceptable blurring. However, with MIP maps utilizing box or Fourier windows, this becomes nearly impossible as the pixel's projection in a texture map deviates from symmetry. Therefore, MIP maps do not satisfy a long-felt need in the art for methods and apparatus which efficiently, accurately and quickly texture map graphics primitives in graphics frame buffer systems.